我們這 30 天學過:
那今天,我們要把這些都整合起來!
做出一個可以「用說的、看圖、回話」的 AI 小幫手!
from openai import OpenAI
from fastapi import FastAPI, Form
from fastapi.responses import FileResponse
import base64
client = OpenAI(api_key="YOUR OPENAI KEY")
app = FastAPI()
@app.post("/ask")
async def ask_ai(prompt: str = Form(...), mode: str = Form("chat")):
"""
mode 可以是:
- chat:對話回覆
- image:生成圖片
- voice:生成語音回覆
"""
if mode == "chat":
# Chat 模式
resp = client.chat.completions.create(
model="gpt-4o-mini",
messages=[{"role": "user", "content": prompt}],
)
answer = resp.choices[0].message.content
return {"mode": "chat", "response": answer}
elif mode == "image":
# 圖片生成模式
result = client.images.generate(
model="gpt-image-1",
prompt=prompt,
size="1024x1024"
)
image_base64 = result.data[0].b64_json
image_bytes = base64.b64decode(image_base64)
output_path = "ai_output.png"
with open(output_path, "wb") as f:
f.write(image_bytes)
return FileResponse(output_path, filename="ai_output.png")
elif mode == "voice":
# 語音生成(TTS)
tts = client.audio.speech.create(
model="gpt-4o-mini-tts",
voice="alloy",
input=prompt
)
output_path = "ai_voice.mp3"
tts.stream_to_file(output_path)
return FileResponse(output_path, filename="ai_voice.mp3")
else:
return {"error": "無效的 mode 參數,請用 chat / image / voice"}
今天我們把過去 20 多天學的技能串起來,打造了一個可以「看圖、講話、畫圖」的 AI 小幫手。
它雖然只是幾十行程式,但已經能回文字、能生成圖像、也能講出聲音
你做的,不只是範例程式,而是你第一個真正能用的「AI 助理原型」!